近幾年資安越來越受到重視,這麼重要的事情當然要給它獨立寫一篇文章啦
簡單來說就是在首次連線時伺服器會將伺服器的公鑰傳送到本機,這時會出現公鑰的雜湊值要你確認,這個雜湊值就是指紋,不過卻沒說要怎麼確認,所以大家常常就直接忽略了這個訊息,直接輸入 yes 就當沒事發生。
但其實這樣是不行的,因為公鑰傳送的過程中有可能會受到中間人攻擊,也就是說這個公鑰有可能被調包,因此攻擊者就可以看到你跟伺服器在講些什麼悄悄話。
確認公鑰有沒有被調包有兩種方法:
以下示範在 AWS EC2 上怎麼找到伺服器公鑰的指紋
這個不是那台遠端主機,而是用來管理那台遠端主機的工具,其實就是指令介面版的主控台啦,可以安裝在自己電腦上,也可以在網頁中使用。
因為在網頁上就有,所以我就直接用網頁上的示範,首先要找到開啟它的地方,它藏在一個很顯眼的地方:
開啟後長的像這樣
先來輸入一個指令來看看有沒有 aws 這個指令,也就是 AWS CLI 這個工具
aws --version
確認可以使用後,就從官方教學手冊中找出 取得執行個體指紋 的教學。
接著要輸入它給的指令,不過它的範例是要輸出到一個檔案,我不想要所以就把後面的 > temp.txt
去掉了
aws ec2 get-console-output --instance-id {你的執行個體ID} --output text
之後就會冒出一大段看不懂的東西
我們要找的東西不在這裡,在很後面的地方
看到這個冒號「:」表示還有下一頁,繼續按「空白鍵」就能顯示下一頁
按到底後會出現「(END)」,按「q」就能退出這個顯示介面
現在畫面上應該會有類似的東東,中間這邊就是我們要找的東西
因為我產生金鑰對時是選 ED25519,所以指紋就是這一行
和首次連線時出現的指紋比對一下
確實是同一個,看來沒受到中間人攻擊,這時候就能放心的輸入 yes 連線進去啦
如果已經有另一個已經成功連線的使用者,或是在網頁中可以開啟主機的終端機,那就可以直接在主機中找
伺服器公鑰通常會放在根目錄的 /etc/ssh/
資料夾裡面,不是平常放使用者公鑰的那個位置
先來看一下這個目錄底下有哪些檔案,輸入 ls {路徑}
ls /etc/ssh/
裡面看起來有不少檔案,可以發現有 .pub 的是公鑰,沒有的是私鑰,而且鑰匙的檔案都是以 ssh_host_{加密方式}_key
來做命名的
這個 ssh_host_ed25519_key.pub
應該就是我要找的公鑰檔案
那就來輸入看看查看指紋的指令 ssh-keygen -lf {路徑}
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
和首次連線時出現的指紋比對一下
Bingo! 一模一樣的指紋,看來沒受到中間人攻擊,這時候就能放心的輸入 yes 連線進去啦